package com.zenithmind.classroom.pojo.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.time.LocalDateTime;

/**
 * 章节VO
 * 
 * @author ZenithMind Team
 * @since 2025-01-09
 */
@Data
@Schema(description = "章节VO")
public class ChapterVO {

    /**
     * 章节ID
     */
    @Schema(description = "章节ID", example = "1234567890")
    private String id;

    /**
     * 课程ID
     */
    @Schema(description = "课程ID", example = "1234567890")
    private String courseId;

    /**
     * 章节标题
     */
    @Schema(description = "章节标题", example = "第一章：Java基础")
    private String title;

    /**
     * 章节描述
     */
    @Schema(description = "章节描述", example = "本章介绍Java的基础语法和概念")
    private String description;

    /**
     * 章节编号
     */
    @Schema(description = "章节编号", example = "1")
    private Integer chapterNumber;

    /**
     * 章节类型（1:普通章节, 2:实践章节, 3:测试章节）
     */
    @Schema(description = "章节类型（1:普通章节, 2:实践章节, 3:测试章节）", example = "1")
    private Integer type;

    /**
     * 类型名称
     */
    @Schema(description = "类型名称", example = "普通章节")
    private String typeName;

    /**
     * 状态（0-草稿，1-已发布，2-已下架）
     */
    @Schema(description = "状态（0-草稿，1-已发布，2-已下架）", example = "1")
    private Integer status;

    /**
     * 状态名称
     */
    @Schema(description = "状态名称", example = "已发布")
    private String statusName;

    /**
     * 预计学习时长（分钟）
     */
    @Schema(description = "预计学习时长（分钟）", example = "60")
    private Integer estimatedMinutes;

    /**
     * 课时数量
     */
    @Schema(description = "课时数量", example = "5")
    private Integer lessonCount;

    /**
     * 是否免费（0-否，1-是）
     */
    @Schema(description = "是否免费（0-否，1-是）", example = "1")
    private Integer isFree;

    /**
     * 是否发布（0-否，1-是）
     */
    @Schema(description = "是否发布（0-否，1-是）", example = "1")
    private Integer isPublished;

    /**
     * 排序值
     */
    @Schema(description = "排序值", example = "1")
    private Integer sortOrder;

    /**
     * 学习人数
     */
    @Schema(description = "学习人数", example = "1000")
    private Long studentCount;

    /**
     * 完成人数
     */
    @Schema(description = "完成人数", example = "800")
    private Long completedCount;

    /**
     * 完成率
     */
    @Schema(description = "完成率", example = "80.0")
    private Double completionRate;

    /**
     * 创建时间
     */
    @Schema(description = "创建时间", example = "2024-01-01 10:00:00")
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    @Schema(description = "更新时间", example = "2024-01-01 10:00:00")
    private LocalDateTime updateTime;

    /**
     * 用户学习进度（当前用户）
     */
    @Schema(description = "用户学习进度", example = "50")
    private Integer userProgress;

    /**
     * 用户学习状态（当前用户）
     */
    @Schema(description = "用户学习状态", example = "1")
    private Integer userStatus;
}
